package com.hs.room.repository.service

import com.hs.room.model.archive.ArchiveLevel
import com.hs.room.model.archive.ArchiveStatus
import com.hs.room.model.archive.ArchiveType
import kotlinx.coroutines.flow.Flow

/**
 * 档案字典仓库 类型、级别、状态
 */
interface IArchiveDictRepository {

    /***
     * 插入数据库
     */
    suspend fun insert(d: ArchiveType)

    /***
     * 插入数据库
     */
    suspend fun insert(d: ArchiveStatus)

    /***
     * 插入数据库
     */
    suspend fun insert(d: ArchiveLevel)

    /***
     * 插入数据库
     */
    suspend fun update(d: ArchiveType)

    /***
     * 插入数据库
     */
    suspend fun update(d: ArchiveStatus)

    /***
     * 插入数据库
     */
    suspend fun update(d: ArchiveLevel)

    /**
     * 查询所有信息
     */
    fun getType(limit: Int, offset: Int): Flow<List<ArchiveType>>

    /**
     * 查询所有信息
     */
    fun getLevel(limit: Int, offset: Int): Flow<List<ArchiveLevel>>

    /**
     * 查询所有信息
     */
    fun getStatus(limit: Int, offset: Int): Flow<List<ArchiveStatus>>

    /**
     * 查询所有信息
     */
    fun countType(): Int

    /**
     * 查询所有信息
     */
    fun countLevel(): Int

    /**
     * 查询所有信息
     */
    fun countStatus(): Int

    suspend fun delete(d: ArchiveType)

    suspend fun delete(d: ArchiveStatus)

    suspend fun delete(d: ArchiveLevel)

}